package org.jeecg.modules.syncdata.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.syncdata.entity.SyncCompensate;

import java.util.List;

/**
 * 同步补偿服务
 *
 * @author zhanglei01
 * @date 2022/03/16
 */
public interface SyncCompensateService extends IService<SyncCompensate> {

    /**
     * 保存同步
     *
     * @param list        列表
     * @param serviceName 服务名称
     * @param tableName   表名
     * @return {@link Boolean}
     */
    Boolean saveToSync(List list, String serviceName, String tableName);

    /**
     * 保存同步
     *
     * @param list        列表
     * @param serviceName 服务名称
     * @param tableName   表名
     * @param remarks     讲话
     * @return {@link Boolean}
     */
    Boolean saveToSync(List list, String serviceName, String tableName, String remarks);

    /**
     * 获取同步数据通过分片
     *
     * @param shardIndex 碎片索引
     * @param shardTotal 碎片总
     * @param pageSize   分页大小
     * @return {@link List}<{@link SyncCompensate}>
     */
    List<SyncCompensate> getSyncDataBySharding(Integer shardIndex, Integer shardTotal, Integer pageSize);

    /**
     * 更新同步数据
     *
     * @param syncCompensate 同步补偿
     */
    void updateSyncData(SyncCompensate syncCompensate);

}
